// 如何定义一个 ConditionalPick 工具类型，支持根据指定
// 的 Condition 条件来生成新的类型，对应的使用示例如下：
// 示例
// 定义 ConditionalPick 工具类型
type ConditionalPick<V, T> = {
  [K in keyof V as V[K] extends T ? K : never]: V[K];
};

// 示例
interface Todo {
  title: string;
  description: string;
  completed: boolean;
}
type TodoPreview = Pick<Todo, "title" | "completed">;
const todo: TodoPreview = {
  title: "Clean room",
  completed: false,
};

// 任务
interface Example {
  a: string;
  b: string | number;
  c: () => void;
  d: {};
}

// 测试用例：
type StringKeysOnly = ConditionalPick<Example, string>;
// 得到 {a: string}
